Подпрограммы для генерации последовательностей

function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes;
        Возвращает все комбинации элементов двух последовательностей, проектируя каждую пару на значение
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes;
        Возвращает все комбинации элементов последовательностей, проектируя каждую тройку на значение
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes;
        Возвращает все комбинации элементов последовательностей, проектируя каждую четвёрку на значение
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes;
        Возвращает все комбинации элементов последовательностей, проектируя каждую пятёрку на значение
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
        Возвращает все комбинации элементов последовательностей в виде последовательности пар
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
        Возвращает все комбинации элементов последовательностей в виде последовательности троек
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
        Возвращает все комбинации элементов последовательностей в виде последовательности четвёрок
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
        Возвращает все комбинации элементов последовательностей в виде последовательности пятёрок
function Iterate<T>(first: T; next: T->T): sequence of T;
        Возвращает бесконечную рекуррентную последовательность элементов, задаваемую начальным элементом first и функцией next
function Linspace(a, b: real; n: integer): sequence of real;
        Возвращает n равномерно распределённых точек между a и b включительно (аналог numpy.linspace)
function PartitionPoints(a, b: real; n: integer): sequence of real;
        Возвращает последовательность вещественных в точках разбиения отрезка [a,b] на n равных частей
function Range(a, b: integer): sequence of integer;
        Возвращает последовательность целых от a до b
function Range(a, b, step: integer): sequence of integer;
        Возвращает последовательность целых от a до b с шагом step
function Range(a, b: BigInteger): sequence of BigInteger;
        Возвращает последовательность длинных целых от a до b
function Range(a, b, step: BigInteger): sequence of BigInteger;
        Возвращает последовательность длинных целых от a до b с шагом step
function Range(c1, c2: char): sequence of char;
        Возвращает последовательность символов от c1 до c2
function Range(c1, c2: char; step: integer): sequence of char;
        Возвращает последовательность символов от c1 до c2 с шагом step
function Range(a, b, step: real): sequence of real;
        Возвращает последовательность вещественных от a до b с шагом step
function ReadSeqInteger(n: integer): sequence of integer;
        Возвращает последовательность из n целых, введенных с клавиатуры
function ReadSeqInteger(prompt: string; n: integer): sequence of integer;
        Выводит приглашение к вводу и возвращает последовательность из n целых, введенных с клавиатуры
function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer;
        Возвращает последовательность целых, вводимых с клавиатуры пока выполняется определенное условие
function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer;
        Выводит приглашение к вводу и возвращает последовательность целых, вводимых с клавиатуры пока выполняется определенное условие
function ReadSeqReal(n: integer): sequence of real;
        Возвращает последовательность из n вещественных, введенных с клавиатуры
function ReadSeqReal(prompt: string; n: integer): sequence of real;
        Выводит приглашение к вводу и возвращает последовательность из n вещественных, введенных с клавиатуры
function ReadSeqRealWhile(cond: real->boolean): sequence of real;
        Возвращает последовательность вещественных, вводимых с клавиатуры пока выполняется определенное условие
function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real;
        Выводит приглашение к вводу и возвращает последовательность вещественных, вводимых с клавиатуры пока выполняется определенное условие
function ReadSeqString(n: integer): sequence of string;
        Возвращает последовательность из n строк, введенных с клавиатуры
function ReadSeqString(prompt: string; n: integer): sequence of string;
        Выводит приглашение к вводу и возвращает последовательность из n строк, введенных с клавиатуры
function ReadSeqStringWhile(cond: string->boolean): sequence of string;
        Возвращает последовательность строк, вводимых с клавиатуры пока выполняется определенное условие
function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string;
        Выводит приглашение к вводу и возвращает последовательность строк, вводимых с клавиатуры пока выполняется определенное условие
function Seq<T>(params a: array of T): sequence of T;
        Возвращает последовательность из указанных элементов
function SeqFill<T>(count: integer; x: T): sequence of T;
        Возвращает последовательность из count элементов x
function SeqGen<T>(count: integer; f: integer > T): sequence of T;
        Возвращает последовательность из count элементов, заполненных значениями f(i)
function SeqGen<T>(count: integer; f: integer->T; from: integer): sequence of T;
        Возвращает последовательность из count элементов, заполненных значениями f(i), начиная с i=from
function SeqGen<T>(count: integer; first: T; next: T->T): sequence of T;
        Возвращает последовательность из count элементов, начинающуюся с first, с функцией next перехода от предыдущего к следующему
function SeqGen<T>(count: integer; first, second: T; next: (T,T) > T): sequence of T;
        Возвращает последовательность из count элементов, начинающуюся с first и second,с функцией next перехода от двух предыдущих к следующему
function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer;
        Возвращает последовательность из n случайных целых элементов
function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer;
        Возвращает последовательность из n случайных целых элементов
function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10; digits: integer := 1): sequence of real;
        Возвращает последовательность из n случайных вещественных элементов
function SeqWhile<T>(first: T; next: T->T; pred: T->boolean): sequence of T;
        Возвращает последовательность элементов с начальным значением first,функцией next перехода от предыдущего к следующему и условием pred продолжения последовательности
function SeqWhile<T>(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T;
        Возвращает последовательность элементов, начинающуюся с first и second,с функцией next перехода от двух предыдущих к следующему и условием pred продолжения последовательности
function Zip<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
        Объединяет две последовательности в последовательность двухэлементных кортежей
function Zip<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
        Объединяет три последовательности в последовательность трехэлементных кортежей
function Zip<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
        Объединяет четыре последовательности в последовательность четырехэлементных кортежей
function Zip<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
        Объединяет пять последовательностей в последовательность пятиэлементных кортежей
function Zip<T, T1, TRes>(a: sequence of T; b: sequence of T1; fun: (T,T1) -> TRes): sequence of TRes;
        Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
function Zip<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; fun: (T,T1,T2) -> TRes): sequence of TRes;
        Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
function Zip<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; fun: (T,T1,T2,T3) -> TRes): sequence of TRes;
        Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
function Zip<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; fun: (T,T1,T2,T3,T4) -> TRes): sequence of TRes;
        Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов